package com.inmerweb.app.commons.dao;

import java.io.Serializable;
import java.util.List;

/**
 * Interfaz generico para acceso a datos DAO. Contiene metodos comunes para la
 * persistencia de objetos (T) genericos
 * 
 * @author Daniel Pascual Sanchez
 *
 */
public interface GenericDao<T, ID extends Serializable> {
	/* Persistir instancia a la DB */
	T save(T entity);

	/* Actualizar cambios realizados a un objeto persistente */
	T update(T entity);

	/* Borrar un objeto en la DB */
	void delete(T entity);

	/* Buscar por id */
	T findById(ID id);

	/* Listar todos los objetos */
	List<T> findAll();

	void flush();
}
